Caching হলো একটি পদ্ধতি যার মাধ্যমে ডেটা সঞ্চিত করা হয়, যাতে পরবর্তীতে সেই ডেটা দ্রুত পাওয়া যায়। ASP.NET Core-এ দুটি প্রধান ধরনের ক্যাশিং ব্যবহৃত হয়: In-memory caching এবং Distributed caching। ক্যাশিং ব্যবহারের মূল উদ্দেশ্য হল অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করা এবং সিস্টেমের প্রতিক্রিয়া সময় (response time) কমানো।
Caching হল ডেটা স্টোর করার একটি প্রক্রিয়া যেখানে একবার ডেটা প্রাপ্তির পর সেটি সঞ্চিত (store) করা হয়। পরবর্তীতে একই ডেটা আবার পুনরায় প্রাপ্ত করার সময় ক্যাশ থেকে ডেটা সরাসরি পাওয়া যায়, যা সাধারণ ডাটাবেস বা ফাইল সিস্টেমের তুলনায় অনেক দ্রুত হয়। ASP.NET Core ক্যাশিং এর জন্য In-memory Caching এবং Distributed Caching সমর্থন করে।
In-memory Caching হচ্ছে একটি ক্যাশিং পদ্ধতি যেখানে ডেটা অ্যাপ্লিকেশনের মেমরিতে সঞ্চিত হয়। এটি সাধারনত ছোট অ্যাপ্লিকেশন বা যেসব অ্যাপ্লিকেশন একটিমাত্র সার্ভারে রান করে তাদের জন্য উপযুক্ত। এই ক্যাশে ডেটা যখন একবার অ্যাক্সেস করা হয়, তখন তা অ্যাপ্লিকেশনের মেমরিতে সঞ্চিত হয় এবং পরবর্তী রিকোয়েস্টে খুব দ্রুত পাওয়া যায়।
ASP.NET Core-এ In-memory Caching ব্যবহার করতে হলে, প্রথমে Startup.cs বা Program.cs-এ AddMemoryCache()
মেথডটি যুক্ত করতে হবে।
Program.cs ফাইল কনফিগারেশন:
var builder = WebApplication.CreateBuilder(args);
// In-memory cache সার্ভিস যোগ করা
builder.Services.AddMemoryCache();
var app = builder.Build();
// ইন-মেমরি ক্যাশ ব্যবহার করতে প্রয়োজনীয় মিডলওয়্যার এবং অন্যান্য কনফিগারেশন
app.MapGet("/", (IMemoryCache cache) =>
{
// ক্যাশ চেক করা
if (!cache.TryGetValue("Time", out string time))
{
time = DateTime.Now.ToString();
// ক্যাশে ডেটা যোগ করা
cache.Set("Time", time, TimeSpan.FromMinutes(5));
}
return time;
});
app.Run();
এই উদাহরণে:
Distributed Caching এমন একটি ক্যাশিং সিস্টেম, যেখানে ডেটা একাধিক সার্ভারে সঞ্চিত হয় এবং বিভিন্ন সার্ভার থেকে অ্যাক্সেস করা যায়। এটি মূলত বড় অ্যাপ্লিকেশন, ক্লাউড অ্যাপ্লিকেশন, বা এমনকি ক্লাস্টার করা সার্ভার ইনফ্রাস্ট্রাকচারের জন্য উপযুক্ত। Redis এবং NCache জনপ্রিয় distributed cache সিস্টেম।
ASP.NET Core-এ Distributed Caching ব্যবহার করতে হলে, সাধারণত Redis বা SQL Server ব্যবহার করা হয়। নিচে Redis ক্যাশ কনফিগারেশনের উদাহরণ দেওয়া হল:
প্রথমে, Redis NuGet প্যাকেজ ইন্সটল করুন:
dotnet add package Microsoft.Extensions.Caching.StackExchangeRedis
Program.cs ফাইল কনফিগারেশন:
var builder = WebApplication.CreateBuilder(args);
// Redis Caching সার্ভিস যোগ করা
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = "localhost:6379"; // Redis সার্ভারের কনফিগারেশন
options.InstanceName = "SampleApp:";
});
var app = builder.Build();
app.MapGet("/", (IDistributedCache cache) =>
{
var cacheKey = "Time";
string time = cache.GetString(cacheKey);
if (string.IsNullOrEmpty(time))
{
time = DateTime.Now.ToString();
// Redis ক্যাশে ডেটা সঞ্চয় করা
cache.SetString(cacheKey, time, new DistributedCacheEntryOptions()
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
});
}
return time;
});
app.Run();
এই উদাহরণে:
ASP.NET Core অ্যাপ্লিকেশনগুলিতে In-memory Caching এবং Distributed Caching ব্যবহারের মাধ্যমে পারফরম্যান্স বাড়ানো সম্ভব। In-memory caching ছোট এবং সহজ অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত, যেখানে ডিস্ট্রিবিউটেড ক্যাশিং বড়, ক্লাউড-বেসড অ্যাপ্লিকেশনগুলির জন্য আদর্শ। Redis বা NCache ব্যবহারের মাধ্যমে ডিস্ট্রিবিউটেড ক্যাশ পরিচালনা করা সম্ভব। ক্যাশিং অ্যাপ্লিকেশনের প্রতিক্রিয়া সময় কমানোর জন্য একটি গুরুত্বপূর্ণ প্রযুক্তি।
common.read_more